broadway: Don't crash of drag-resizing when already active
authorAlexander Larsson <alexl@redhat.com>
Fri, 22 Mar 2019 12:52:08 +0000 (13:52 +0100)
committerAlexander Larsson <alexl@redhat.com>
Tue, 26 Mar 2019 16:07:47 +0000 (17:07 +0100)
This is what the X11 code does.

gdk/broadway/gdksurface-broadway.c

index 56e9684112ccd25490619b129e20a92402ac6abf..b9fbec68c6ab9fede81e034a9bc88cd54d34d413 100644 (file)
@@ -1232,6 +1232,9 @@ gdk_broadway_surface_begin_resize_drag (GdkSurface     *surface,
 
   mv_resize = get_move_resize_data (gdk_surface_get_display (surface), TRUE);
 
+  if (mv_resize->moveresize_surface != NULL)
+    return; /* already a drag operation in progress */
+
   mv_resize->is_resize = TRUE;
   mv_resize->moveresize_button = button;
   mv_resize->resize_edge = edge;
@@ -1270,8 +1273,13 @@ gdk_broadway_surface_begin_move_drag (GdkSurface *surface,
   if (impl->maximized)
     return;
 
+  g_print ("gdk_broadway_surface_begin_move_drag\n");
+
   mv_resize = get_move_resize_data (gdk_surface_get_display (surface), TRUE);
 
+  if (mv_resize->moveresize_surface != NULL)
+    return; /* already a drag operation in progress */
+
   mv_resize->is_resize = FALSE;
   mv_resize->moveresize_button = button;
   mv_resize->moveresize_x = root_x;